/**
 * text rule
 * @Author: TAO 1755885716@qq.com
 * @Date: 2022-10-31 11:23:04
 */
const test = {}
// 必须有值 0和false可通过 对象内须有字段 数组长度需大于0
test['*']=function(value) {
	if(test.array(value)) return value.length
	if(test.object(value)) return Object.keys(value).length>0
	return (!!value || value === 0 || value === false)
}
// 非假的有效字符 0和false不可通过
test.s=function(value) {
	return (!!value)
}
// 最大允许值
test.max=function(value,num) {
	return parseFloat(value)<=num
}
// 最小允许值
test.min=function(value,num) {
	return parseFloat(value)>=num
}
// 必须字符串
test.string=function(value) {
	return Object.prototype.toString.call(value)=="[object String]";
}

/**
 *
 * 数字
 */
test.number=function(value) {
	return !isNaN(value);
}
/**
 * 多个字段有1个有值即可
* @Param valueList Array
*/
test.anyone=function(valueList){
	let bol=false
	if(valueList){
		valueList.forEach(item => {
			if(!!item || item === 0 && item === false) bol=true
		});
	}
	return bol;
}
//多个值是否都相等
test.eq=function(valueList){
	for (let i = 0; i < valueList.length; i++) {
		if(i!=0){
			if(valueList[i-1]!=valueList[i]){
				return false
			}
		}
	}
	return true
}
// 邮政编码
test.postal=function(value) {
	return !isNaN(value) && (value+'').length==6
}
// 必须是数组
test.array=function(value) {
	return Object.prototype.toString.call(value)=="[object Array]";
}
// 必须是对象
test.object=function(value) {
	return Object.prototype.toString.call(value)=="[object Object]";
}
// a-z小写
test.az=function(value) {
	let reg=/^[a-z]+$/;
	return reg.test(value);
}
// A-Z大写
test.AZ=function(value) {
	let reg=/^[A-Z]+$/;
	return reg.test(value);
}
// 手机号
test.phone=function(value) {
	let reg=/^(13[0-9]{9})$|(14[0-9]{9})$|(15[0-9]{9})$|(16[0-9]{9})$|(17[0-9]{9})$|(18[0-9]{9})$|(19[0-9]{9})$/;
	return reg.test(value);
}
// 邮箱 可以有多个点但是不能连续的点
test.email=function(value) {
	let reg=/^[a-zA-Z0-9]+([._]?[.-]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([.-]?[a-zA-Z0-9]+)*\.[a-zA-Z]{2,}$/;
	return reg.test(value);
}
// 网址 可以不带有协议
test.www=function(value) {
	let reg=/^((http:\/\/|https:\/\/|ftp:\/\/|\/\/){0,1}([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?)/;
	return reg.test(value);
}
// http网址
test.http=function(value) {
	let reg=/^((http:\/\/)([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?)/;
	return reg.test(value);
}
// https网址
test.https=function(value) {
	let reg=/^((https:\/\/)([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?)/;
	return reg.test(value);
}
// 网站 必须带有协议 如http://
test.web=function(value) {
	let reg=/^((ht|f)tps?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/;
	return reg.test(value);
}
// 身份证
test.idcard=function(value) {
	let reg=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
	return reg.test(value);
}
// 密码
test.password=function(value) {
	let reg=/^[a-zA-Z]\w{5,17}$/
	return reg.test(value);
}
// 高强度密码
test.pluspassword=function(value) {
	let reg=/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/
	return reg.test(value);
}

export default test
